/**
 * 我的记事本：界面、功能
 */
package test;

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;

public class NotePad extends JFrame implements ActionListener {

	// 定义需要添加的控件
	JTextArea jta = null;
	// 定义菜单条
	JMenuBar jmb = null;
	// 定义JMen
	JMenu jm1 = null;
	JMenu jm2 = null;
	// 定义JMenItem
	JMenuItem jmi1 = null;
	JMenuItem jmi2 = null;

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		NotePad np = new NotePad();
	}

	// 构造函数
	public NotePad() {

		// 创建jta
		jta = new JTextArea();

		jmb = new JMenuBar();

		jm1 = new JMenu("打开(F)");
		// 设置助记符
		jm1.setMnemonic('F');
		jm2 = new JMenu("编辑(E)");
		// 设置助记符
		jm2.setMnemonic('E');

		jmi1 = new JMenuItem("打开(O)");
		jmi1.setMnemonic('o');
		jmi1.addActionListener(this);
		// 对打开监控
		jmi1.setActionCommand("open");

		jmi2 = new JMenuItem("保存(S)");
		jmi2.setMnemonic('s');
		// 对保存监控
		jmi2.addActionListener(this);
		jmi2.setActionCommand("save");
		// 加入
		this.setJMenuBar(jmb);
		jmb.add(jm1);
		jmb.add(jm2);
		jm1.add(jmi1);
		jm1.add(jmi2);

		// 放入到Frame
		this.add(jta);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(400, 300);
		this.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		// 判断哪个菜单被点中
		if (e.getActionCommand().equals("open")) {
			// System.out.println("打开了 ");

			// 隆重推出JFileChooser
			// 创建一个文件选择对象
			JFileChooser jfc1 = new JFileChooser();
			// 设置名字
			jfc1.setDialogTitle("请选择文件~~~");
			// 设置默认方式
			jfc1.showOpenDialog(null);
			// 显示
			jfc1.setVisible(true);
			// System.out.println("打开了 ");
			// 得到用户选择的绝对路径
			String filename = jfc1.getSelectedFile().getAbsolutePath();

			System.out.println(filename);

			FileReader fr = null;
			BufferedReader br = null;

			try {
				fr = new FileReader(filename);
				br = new BufferedReader(fr);

				// 从文件读取信息并显示到jta

				String s = "";
				String allCom = "";
				while ((s = br.readLine()) != null) {
					allCom += s + "\r\n";

				}
				// 放入jta
				jta.setText(allCom);
			} catch (Exception e1) {
				// TODO 自动生成的 catch 块
				e1.printStackTrace();
			} finally {

				try {
					br.close();
					fr.close();

				} catch (Exception e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}
			}
		} else if (e.getActionCommand().equals("save")) {
			
			// 出现保存对话框
			JFileChooser jfc = new JFileChooser();
			jfc.setDialogTitle("另存为~~~~");
			// 按默认方式显示
			jfc.showSaveDialog(null);
			jfc.setVisible(true);
			
			//得到用户希望把文件保存到哪里 绝对路径
			String filename = jfc.getSelectedFile().getAbsolutePath();
			FileWriter fw=null;
			BufferedWriter bw=null;
			
			try {
				fw=new FileWriter(filename);
				bw=new BufferedWriter(fw);
				
				bw.write(this.jta.getText());
			} catch (Exception e1) {
				// TODO 自动生成的 catch 块
				e1.printStackTrace();
			}finally{
				try {
					fw.close();
					bw.close();
				} catch (Exception e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}
			}
			
		}
	}

}
